Skip to main content

Manipulator and Gripper

Overview

The Manipulator and Gripper system equips the Lunar Rover with dexterous manipulation capability. It consists of: testing

  • Manipulator (arm): A Realman robotic arm, connected via Ethernet and powered with a 24V supply.
  • Gripper: An electrically actuated end-effector connected to the manipulator flange and controlled through ROS 2 nodes. This manual explains how to assemble, power up, and operate both the manipulator and gripper in simulation and real hardware.

Safety Precautions

  • Always verify power connections before turning on the system
  • Ensure clear workspace around the manipulator before operation
  • Keep personnel at a safe distance during manipulator movement
  • Follow all electrical safety protocols

NOTE: ENSURE YOU STRICTLY FOLLOW THE INSTRUCTIONS IN docs/LunarRover/Hardware Assembling and Debugging.md/Ethernet Connection with Realman Robot Manipulator

Prerequisites

Dependencies

  • Serial Library: The gripper driver depends on the serial library. Since ROS 2 does not support Catkin-based builds, clone the following repo:
git clone https://gitee.com/laiguanren/serial.git
  • CH340 USB to RS485 driver: Install drivers from CH341SER_LINUX to connect the gripper to /dev/ttyCH341USB0.

Common Issues

  • If /dev/ttyCH341USB0 is missing:
sudo apt remove brltty

Then replug the dongle.

  • If you get serial unable to open:
sudo chmod 777 /dev/ttyCH341USB0

System Initialization

Power on Sequence

  1. Connect the manipulator according to Hardware Assembling and Debugging
  2. Press the power button on the 24V power cell
  3. Press the power button on the manipulator itself
  4. Observe LED status:
    • Flashing blue first and then green: Successful initialization
    • Other patterns: Refer to hardware troubleshooting guide

Software Launch

To run the manipulator without chassis:

ros2 launch rm_bringup rm_bringup.launch.py

Verification: Check that rviz2 launches successfully and displays correct joint states.

Gripper Operation

Power Activation

Prerequisite: The manipulator must be brought up first. Enable gripper power (12V output):

ros2 topic pub --once /rm_driver/set_tool_voltage_cmd std_msgs/msg/UInt16 "{data: 2}"

Expected Response: Gripper fingers should open, indicating readiness.

Gripper Action Modes

Mode 1: Close with Force Threshold

Closes at fixed speed and stops when target force is reached. Parameters:

ParameterDescriptionValue RangeNotes
speedClosing speed1~1000Dimensionless
forceTarget force threshold1~10001 value = 0.0015kg
blockBlocking modetrue/false

Command:

ros2 topic pub --once /rm_driver/set_gripper_pick_cmd rm_ros_interfaces/msg/Gripperpick "{speed: 200, force: 200, block: true}"

Result Monitoring:

ros2 topic echo /rm_driver/set_gripper_pick_result

Mode 2: Adaptive Close with Force Monitoring

Closes at fixed speed, stops at force threshold, and resumes if force drops below threshold. Parameters: Same as Mode 1

Command:

ros2 topic pub --once /rm_driver/set_gripper_pick_on_cmd rm_ros_interfaces/msg/Gripperpick "{speed: 200, force: 200, block: false}"

Result Monitoring:

ros2 topic echo /rm_driver/set_gripper_pick_on_result

Mode 3: Position Control

Moves to target position at fixed speed.

Parameters:

ParameterDescriptionValue RangeNotes
positionTarget position.1~10001 refers to 0mm, 1000 refers to 70mm
blockBlock or not?true or false

Command:

ros2 topic pub --once /rm_driver/set_gripper_position_cmd rm_ros_interfaces/msg/Gripperset "{position: 200, block: true}"

Result Monitoring:

ros2 topic echo /rm_driver/set_gripper_position_result

Low-level Gripper Driver (Serial Node)

The Gripper_control node (Gripper_control.cpp) provides service-based control for advanced scenarios.

Launch:

ros2 run inspire_gripper Gripper_control_node

Available Services:

ServiceFunction
SetIDAssign a new gripper ID
SetopenlimitSet max/min opening limits
SetmovetgtMove to target opening width
SetmovemaxRelease at set speed
SetmoveminClose with speed + force
SetmoveminholdClose continuously with force threshold
SetestopEmergency stop
SetparamSave parameters permanently
GetopenlimitQuery opening limits
GetcopenGet current opening width
GetstatusGet status, error code, temperature

This allows deeper integration and diagnostic access compared to the high-level Realman driver.

  1. Assemble and power on manipulator + gripper.
  2. Launch manipulator:
ros2 launch rm_bringup rm_bringup.launch.py
  1. Enable tool voltage (12V):
ros2 topic pub --once /rm_driver/set_tool_voltage_cmd std_msgs/msg/UInt16 "{data: 2}"
  1. Control gripper via:
  • ROS 2 topics (for high-level pick/place operations).
  • Gripper_control services (for fine-grained control and debugging).

Notes & Troubleshooting

  • Always bring up manipulator before powering gripper.
  • For serial driver errors: check port /dev/ttyCH341USB0 and permissions.
  • Use Getstatus service to debug errors and overheating issues.
  • Emergency stop (Setestop) is available for safety-critical operations.